package hd.util.app;

import android.content.Context;
import android.content.SharedPreferences;

/**
 * 配置
 * <p/>
 * Created by haidy on 14/12/20.
 */
public class BaseConfig {

    private final SharedPreferences sp;

    public BaseConfig(Context context, String name) {
        sp = context.getSharedPreferences(name, Context.MODE_PRIVATE);
    }

    /**
     * 保存配置
     *
     * @param key   key
     * @param value value
     */
    public void saveConfig(String key, String value) {
        if (key != null && !key.isEmpty() && value != null)
            sp.edit().putString(key, value).apply();
    }

    /**
     * 保存配置
     *
     * @param key   key
     * @param value value
     */
    public void saveConfig(String key, int value) {
        if (key != null && !key.isEmpty())
            sp.edit().putInt(key, value).apply();
    }

    /**
     * 保存配置
     *
     * @param key   key
     * @param value value
     */
    public void saveConfig(String key, boolean value) {
        if (key != null && !key.isEmpty())
            sp.edit().putBoolean(key, value).apply();
    }

    /**
     * 获取配置
     *
     * @param key      key
     * @param defValue 默认值
     * @return value
     */
    public String getString(String key, String defValue) {
        if (key != null && !key.isEmpty())
            return sp.getString(key, defValue);
        return null;
    }

    /**
     * 获取配置
     *
     * @param key      key
     * @param defValue 默认值
     * @return value
     */
    public int getInt(String key, int defValue) {
        if (key != null && !key.isEmpty())
            return sp.getInt(key, defValue);
        return -1;
    }

    /**
     * 获取配置
     *
     * @param key      key
     * @param defValue 默认值
     * @return value
     */
    public boolean getBoolean(String key, boolean defValue) {
        return key != null && !key.isEmpty() && sp.getBoolean(key, defValue);
    }

    /**
     * 移除某项配置
     *
     * @param key key
     */
    public void removeKey(String key) {
        if (key != null && !key.isEmpty())
            sp.edit().remove(key).apply();
    }

    /**
     * 清空配置
     */
    public void clear() {
        sp.edit().clear().apply();
    }

    /**
     * 是否包含某个配置
     *
     * @param key key
     * @return 是否包含
     */
    public boolean contains(String key) {
        return key != null && !key.isEmpty() && sp.contains(key);
    }

    /**
     * 是否配置为空
     *
     * @return
     */
    public boolean isEmpty() {
        return sp.getAll().isEmpty();
    }
}
